With today's widespread use of the Internet as a primary communication medium, many standard communication tools are now capable of communicating over a network. For instance, telephones, pagers, cell phones, handheld computers, and even fax machines now offer features to allow them to be accessed and controlled from over the Internet via an IP address designation or other network addressing scheme. As a result, these devices have the ability to communicate with each other remotely from over the network to share information, or receive data. Now it is possible for a text message to be transmitted by a user of a handheld device to a fax machine or printer belonging to another user, all from over the network. Furthermore, a user having several communication devices (e.g., a cell phone, laptop and handheld PC) can configure each of these devices to the network using a single alias or identifier, such as a username (e.g., username@b.com). In this way, the user's many devices need not be configured separately onto the network, making them easier to manage and access.
To support network telephony services such as those described above, a common protocol known as the Session Initiation Protocol (SIP) is often used to facilitate the communication. SIP is a text-based, peer-to-peer network protocol designed to provide telephony and voice over IP (VoIP) services over a network connection. It can be used to establish, maintain, and terminate calls, or sessions, between two or more device users. Typically, SIP is enabled with an SIP server, which can act as a proxy server that intermediates a call. As such, when the user of a first device places a call or requests a session with a second device user via the network, the proxy server receives (intercepts) the message in the form of an SIP request, processes it, and forwards the message to the second device. The processing that takes place includes standard SIP functions such as determining the location of the user of the second device, determining if there are other devices associated with the same user, and verifying the availability of the second device to receive calls. Other more advanced services are also capable of being performed such as call routing and forwarding, authentication, device or call request retransmission, and network security and access control. Typically, a dedicated server that is separate from the proxy server performs these more advanced services. The dedicated server has specific instructions for performing a particular service, and can communicate directly with the proxy server during the handling of a call.
The usage of dedicated servers for providing various services during a call does have a few drawbacks. One drawback is that the introduction of a dedicated server for performing a service requires extra network resources to be expended in order to complete the call. Rather than directly communicating with the second device, the first device has to communicate with the proxy server and one or more dedicated servers before it ever reaches the second device to place the call. Obviously, this places greater demand on the network, which could limit the reliability and speed at which the call is placed. Another drawback is that another server must be added to the network (such as by the network administrator of the proxy) each time a new service is to be made available. For example, to provide voicemail services, a dedicated “voicemail” server must be introduced to the existing system, which could require significant configuration and setup time. Still further, it is possible for calls to be routed indefinitely amongst the various devices handling the calls, as conventional systems do not always account for message looping. Currently, there is no convenient and reliable way in which to extend the services or features of network systems that support telephony, VoIP and other applications.